home *** CD-ROM | disk | FTP | other *** search
-
-
-
- EXP Mathematical Library Procedures EXP
-
-
-
- NNAAMMEE
- exp, expm1, log, log10, log1p, pow - exponential, logarithm,
- power
-
- SSYYNNOOPPSSIISS
- ##iinncclluuddee <<mmaatthh..hh>>
-
- ddoouubbllee eexxpp((xx))
- ddoouubbllee xx;;
-
- ddoouubbllee eexxppmm11((xx))
- ddoouubbllee xx;;
-
- ddoouubbllee lloogg((xx))
- ddoouubbllee xx;;
-
- ddoouubbllee lloogg1100((xx))
- ddoouubbllee xx;;
-
- ddoouubbllee lloogg11pp((xx))
- ddoouubbllee xx;;
-
- ddoouubbllee ppooww((xx,,yy))
- ddoouubbllee xx,,yy;;
-
- DDEESSCCRRIIPPTTIIOONN
- Exp returns the exponential function of x.
-
- Expm1 returns exp(x)-1 accurately even for tiny x.
-
- Log returns the natural logarithm of x.
-
- Log10 returns the logarithm of x to base 10.
-
- Log1p returns log(1+x) accurately even for tiny x.
-
- Pow(x,y) returns x**y.
-
- EERRRROORR ((dduuee ttoo RRoouunnddooffff eettcc..))
- exp(x), log(x), expm1(x) and log1p(x) are accurate to within
- an _u_l_p, and log10(x) to within about 2 _u_l_ps; an _u_l_p is one
- _Unit in the _Last _Place. The error in pow(x,y) is below
- about 2 _u_l_ps when its magnitude is moderate, but increases
- as pow(x,y) approaches the over/underflow thresholds until
- almost as many bits could be lost as are occupied by the
- floating-point format's exponent field; that is 8 bits for
- VAX D and 11 bits for IEEE 754 Double. No such drastic loss
- has been exposed by testing; the worst errors observed have
- been below 20 _u_l_ps for VAX D, 300 _u_l_ps for IEEE 754 Double.
- Moderate values of pow are accurate enough that
- pow(integer,integer) is exact until it is bigger than 2**56
- on a VAX, 2**53 for IEEE 754.
-
-
-
- Sprite v1.0 May 27, 1986 1
-
-
-
-
-
-
- EXP Mathematical Library Procedures EXP
-
-
-
- DDIIAAGGNNOOSSTTIICCSS
- Exp, expm1 and pow return the reserved operand on a VAX when
- the correct value would overflow, and they set _e_r_r_n_o to
- ERANGE. Pow(x,y) returns the reserved operand on a VAX and
- sets _e_r_r_n_o to EDOM when x < 0 and y is not an integer.
-
- On a VAX, _e_r_r_n_o is set to EDOM and the reserved operand is
- returned by log unless x > 0, by log1p unless x > -1.
-
- NNOOTTEESS
- The functions exp(x)-1 and log(1+x) are called expm1 and
- logp1 in BASIC on the Hewlett-Packard HP-71B and APPLE
- Macintosh, EXP1 and LN1 in Pascal, exp1 and log1 in C on
- APPLE Macintoshes, where they have been provided to make
- sure financial calculations of ((1+x)**n-1)/x, namely
- expm1(n*log1p(x))/x, will be accurate when x is tiny. They
- also provide accurate inverse hyperbolic functions.
-
- Pow(x,0) returns x**0 = 1 for all x including x = 0, Infin-
- ity (not found on a VAX), and _N_a_N (the reserved operand on a
- VAX). Previous implementations of pow may have defined x**0
- to be undefined in some or all of these cases. Here are
- reasons for returning x**0 = 1 always:
-
- (1) Any program that already tests whether x is zero (or
- infinite or _N_a_N) before computing x**0 cannot care
- whether 0**0 = 1 or not. Any program that depends upon
- 0**0 to be invalid is dubious anyway since that
- expression's meaning and, if invalid, its consequences
- vary from one computer system to another.
-
- (2) Some Algebra texts (e.g. Sigler's) define x**0 = 1 for
- all x, including x = 0. This is compatible with the
- convention that accepts a[0] as the value of polynomial
- p(x) = a[0]*x**0 + a[1]*x**1 + a[2]*x**2 +...+ a[n]*x**n
-
- at x = 0 rather than reject a[0]*0**0 as invalid.
-
- (3) Analysts will accept 0**0 = 1 despite that x**y can
- approach anything or nothing as x and y approach 0
- independently. The reason for setting 0**0 = 1 anyway
- is this:
-
- If x(z) and y(z) are _a_n_y functions analytic (expandable
- in power series) in z around z = 0, and if there x(0) =
- y(0) = 0, then x(z)**y(z) -> 1 as z -> 0.
-
- (4) If 0**0 = 1, then infinity**0 = 1/0**0 = 1 too; and then
- _N_a_N**0 = 1 too because x**0 = 1 for all finite and
- infinite x, i.e., independently of x.
-
-
-
-
-
- Sprite v1.0 May 27, 1986 2
-
-
-
-
-
-
- EXP Mathematical Library Procedures EXP
-
-
-
- SSEEEE AALLSSOO
- math(3M), infnan(3M)
-
- AAUUTTHHOORR
- Kwok-Choi Ng, W. Kahan
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sprite v1.0 May 27, 1986 3
-
-
-
-